Software agents are commonly used in distributed software environments. For example, network administrators often deploy device-monitoring agents to network servers and routing devices. The deployed agents typically collect a specified set of data and return results directly to a master server via, e.g., an SNMP connection.
In a typical system, a system administrator must manually deploy a set of agents to each remote network device. This process is both time consuming and expensive. Additionally, configuration of the agents and scheduling of jobs to be performed by the agents may be cumbersome and time consuming, often requiring a system administrator to physically interact with the devices at remote locations.
Another common issue in agent-based computing systems involves software development. Typically, a separate agent is required for every task to be performed on the remote systems. Development becomes difficult, because programming of agents generally requires intensive programming and testing to ensure that the agent is capable of accurately interacting with system and application interfaces.
Additionally, configuration of jobs to be performed by the agents is also problematic. For example, common systems require either a dedicated application interface for configuring jobs, or the entire agent must be loaded for the purpose of configuration. This often requires the system administrator to physically interact with a device on which the job is to be performed.